package com.ficus.road.maintain.core.model;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * 告警对象
 *
 * @Author hao.zhou1
 * @Since 2021/4/7 下午6:49
 */
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class Hit implements Serializable {
    private static final long serialVersionUID = -5024441194819501980L;
    /**
     * 长度，单位m
     */
    Float length;
    /**
     * 面积，单位m^2
     */
    Float area;
    /**
     * 角度
     */
    Float angle;
    /**
     * 高差
     */
    Integer heightDiff;
    /**
     * 倒伏数量
     */
    Integer fallDownNumber;
    /**
     * 道路类型 ROAD_TYPE_UNKNOWN-未知; ROAD_TYPE_ASPHALT-柏油路 ROAD_TYPE_CEMENT-水泥路
     */
    String roadType;
    String roadId;
    /**
     * 是否需要推送
     */
    Boolean needPushOut;
    /**
     * 人头数
     */
    Integer headCount;
    /**
     * 舒适指数
     */
    Float comfortRate;
    /**
     * 场景  CITY 城市治理;ECONOMIC 经济治理;SOCIETY 社会治理
     */
    String scene;
    /**
     * 场景  ORDER 有序; 干净 CLEAN 干净; SECURITY 安全
     */
    String classification;
    @JsonProperty("id")
    /**
     * id
     */
    private String id;
    /**
     * 病害类型
     */
    private String type;
    /**
     * 病害时间
     */
    private Long hitTime;
    /**
     * 病害派单时间
     */
    private Long dispatchTime;
    /**
     * 第一次病害时间
     */
    private Long firstHitTime;
    /**
     * 病害详细信息，位置，框
     */
    private List<HitSubject> subjects;
    /**
     * 病害属性
     */
    private HitAttrs attrs;
    /**
     * 病害历史
     */
    private List<HistoryHit> list;
    /**
     * 创建时间
     */
    private Long creationTime;
    private Date createTime;
    /**
     * 最后修改时间
     */
    private Long lastModificationTime;
    /**
     * 严重程度
     */
    private SeverityType severityType;
    /**
     * 算法版本
     */
    private String algoVersion;
    /**
     * 宽度
     */
    private Integer width;

    /**
     * 前端MapId
     */
    private String mapId;

    // "起点桩号
    private Double startStake;
    // "止点桩号
    private Double endStake;
    private String sectionRoadId;
}
